#ifndef _CTXVISITOR_H_
#define _CTXVISITOR_H_

#include <QList>
#include "Visitor.h"

class SimpleNode;
class Object;
class Name;
class Starred;
class Attribute;
class Subscript;
class List;
class Tuple;
class Call;

class CtxVisitor: public Visitor
{
public:
    CtxVisitor();

    void setParam(const SimpleNodePtr& node);
    void setKwOnlyParam(const SimpleNodePtr& node);
    void setStore(const SimpleNodePtr& node);
    void setStore(const QList<SimpleNodePtr>& nodes);
    void setDelete(const SimpleNodePtr& node);
    void setDelete(const QList<SimpleNodePtr>& nodes);
    void setAugStore(const SimpleNodePtr& node);

    void visitName(const NamePtr& node);
    void visitStarred(const StarredPtr& node);
    void visitAttribute(const  AttributePtr& node);
    void visitSubscript(const SubscriptPtr& node);
    void visitList(const ListPtr& node);
    void visitTuple(const TuplePtr& node);
    void visitCall(const CallPtr& node);
    void visitListComp(const CallPtr& node);
    void unhandled_node(const SimpleNodePtr& node);
    void visitSuite(const SuitePtr& node);
private:
    int _ctx;
};

#endif
